// 类（对象）（属性、方法）
// 熟悉class类语法、熟悉Promise语法、熟悉uniapp
export default class HttpClient{
	default //1. 网络请求配置
	constructor(config){//2. 实例化的时候，会自动执行
		this.default={
			baseURL:'',
			header:{},
			   ...config
			}
		}
	}
	
	// 3. 发起网络请求的通用方法
	request(config){
		//config提供的url会有两种情况？
		if(config.url&&!config.url.startsWith('http')){ //处理非http打头的url
			config.url = this.default.baseURL + config.url
		}
		return new Promise((resolve,reject)=>{
			uni.request({
				url:config.url,  //此处要确保url是http打头的完整地址
				method:config.method,
				header:{
					...this.default.header //拓展运算符
				},
				success: (res) => {
					resolve(res)   //成功结果
				},
				fail: (err) => {
					reject(err)  //失败结果
				}
			})
		})
	}
	get(url){
		//4. 发起网络请求
		return this.request({url,method:'GET'})
	}
}